FROM golang:alpine AS builder

# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn\
    CGO_ENABLED=1 \
    GOOS=linux \
    GOARCH=amd64

RUN apk add --no-cache build-base \
    mupdf mupdf-dev \
    freetype freetype-dev \
    harfbuzz harfbuzz-dev \
    jbig2dec jbig2dec-dev \
    jpeg jpeg-dev \
    openjpeg openjpeg-dev \
    zlib zlib-dev

# 移动到工作目录：/build
WORKDIR /build

# 将代码复制到容器中
COPY . .

# 将我们的代码编译成二进制可执行文件 server-app
RUN export CGO_LDFLAGS="-lmupdf -lm -lmupdf-third -lfreetype -ljbig2dec -lharfbuzz -ljpeg -lopenjp2 -lz" \
        && go mod download \
        && go build -o server-app .

# 移动到用于存放生成的二进制文件的 /dist 目录
WORKDIR /dist

# 将二进制文件从 /build 目录复制到这里
RUN cp /build/server-app .

# 声明服务端口
EXPOSE 8081

# 启动容器时运行的命令
CMD ["/dist/server-app"]